# @Time    :2025/3/31 10:48
# class Person:
#     home = "er"
#     # def __init__(self):
#     #     pass  #__init__ 方法只能用来初始化对象的状态，不能返回任何值
# print(Person.home) #如果你只是想访问类属性 home，不需要定义 __init__ 方法

# ----------------有一个下划线的 是非公开的，但是没有约束力------------------------
# class Person:
#     _home = "er"
#
#     # def __init__(self, home):
#     #     self._home = home
#     # def __init__(self):
#
# print(Person._home)
# p1 = Person
# print(p1._home)


# -----------------双下划线-私有化属性和方法----------------------
class Person:
    __home = "earth"  # __x，会被改写为 _类名__x。

    def __init__(self, name, age):
        self.__name = name
        self.age = age

    def __eat(self):
        print("吃...")

    def eat_1(self):
        print("吃..eat_1里的.")


p1 = Person("王华", 12)
print(p1.age)
p1.eat_1()

print("----访问私有的----  __x，会被改写为 _类名__x。-----------")
print(Person._Person__home)  # 可以通过类名去调用私有属性
print(p1._Person__name)  # 实例属性需要通过实例调用，不能 通过类名调用





#     # 访问私有属性，实例方法转换成属性
#     @property  # 没参数 有返回值
#     def name(self):
#         return self.__name
#
#     @name.setter
#     def name(self, name):  # 设置 有参数没有返回值
#         if name == "er":
#             print("名字说对了")
#             self.__name = name  # 更改home
#         else:
#             print("名字呀你说错了")
#
#     @property
#     def age(self):
#         return self.__age
#
#     @name.setter
#     def age(self, age):
#         if age != 13:
#             print("你说错了")
#
#         else:
#             print("说对了")
#             self.__age = age  # 更改home
#
#
# p1 = Person("we")
# p1.age = 12
# p1.age = 13
# p1.name = "er"
